VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ApiEVENTMSG"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit

' ##MODULE_DESCRIPTION This class provides the properties for events used in the _
recording and playback of journals by the WH_JOURNALRECORD and WH_JOURNALPLAYBACK records.

Private Type EVENTMSG
    Message As Long
    paramL As Long
    paramH As Long
    time As Long
    hWnd As Long
End Type

Public Message As Long
Public paramL As Long
Public paramH As Long
Public time As Long
Public hWnd As Long

Public CreatedOK As Boolean
'\\ Private memory handling functions
Private Declare Sub CopyMemoryEventMsg Lib "kernel32" Alias "RtlMoveMemory" (Destination As EVENTMSG, ByVal Source As Long, ByVal Length As Long)
Private Declare Function IsBadReadPtrEventMsg Lib "kernel32" Alias "IsBadReadPtr" (ByVal lp As Long, ByVal ucb As Long) As Long
Private Declare Function IsBadWritePtrEventMsg Lib "kernel32" Alias "IsBadWritePtr" (ByVal lp As Long, ByVal ucb As Long) As Long

'\\ --[CreateFromPointer]---------------------------------------------
'\\ Fills this EventMsg object from the location poiunted to by
'\\ lpEventMsg
'\\ VB.NET Porting note: This function should be replaced with an override
'\\ of the New() for correctness
'\\ ----------------------------------------------------------------------------------------
'\\ (c) 2001 - Merrion Computing.  All rights  to use, reproduce or publish this code reserved
'\\ Please check http://www.merrioncomputing.com for updates.
'\\ ----------------------------------------------------------------------------------------
Friend Function CreateFromPointer(lpEventMsg As Long) As Boolean

Dim ftThis As EVENTMSG

CreatedOK = False

If Not IsBadReadPtrEventMsg(lpEventMsg, Len(ftThis)) Then
    Call CopyMemoryEventMsg(ftThis, lpEventMsg, Len(ftThis))
    If Err.LastDllError = 0 Then
        With ftThis
            hWnd = .hWnd
            Message = .Message
            paramH = .paramH
            paramL = .paramL
            time = .time
            If Err.LastDllError = 0 Then
                CreatedOK = True
            End If
        End With
    End If
End If

CreateFromPointer = CreatedOK

End Function
